package edu.kit.los.lookup;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import edu.kit.los.event.StandartEvent;

/**
 * @author felix
 * Abstrakte Oberklasse für Lookups
 */
public abstract class Lookup {
	/**
	 * Führt einen Lookup durch und gibt dieses als String zurück
	 * @param URL
	 * @return Lookup als String
	 * @throws IOException TODO Fehler muss noch behandelt werden
	 */
	public static String lookup_event_String(URL url) throws IOException{
		//URL zu Facbook
		//URL event_url = new URL("http://graph.facebook.com/" + id);
		//HTTP-Connection öffnen
		HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//		conn.addRequestProperty("accept", "text/turtle"); //TODO: Dies ist der Aufruf f�r RDF in Turtle
		InputStream is = conn.getInputStream();
		//Encoding festlegen
		String encoding = conn.getContentEncoding();
		if (encoding == null) {
			encoding = "ISO-8859-1";
		}
		//Datei einlesen
		BufferedReader in = new BufferedReader(new InputStreamReader(is,encoding));
		String l;
		StringBuilder sb = new StringBuilder();
		while ((l = in.readLine()) != null) {
			sb.append(l);
			sb.append('\n');
		}
		in.close();

		//EventPrototype (String) zurückgeben
		return sb.toString();
	} 
	
	/**
	 * Lookup eines Events. Muss von jeder erbenden Klasse implementiert werden. 
	 * @param Query String
	 * @param int Limit
	 * @return Liste von StandartEvents
	 */
	public abstract java.util.List<StandartEvent> lookup(String query, int limit);
	
	
	
	
	

}
